Analysing Heart Rate and Respiration data

The goal of this assignment is to first familiarize you with heart rate, and respiration data and their preprocessing. The second part explores how to analyze interpersonal coordination of these signals.

These are the questions you need to be able to answer at the end of the assignment (aka that you need to submit as part of the portfolio)

  1. How do you preprocess heart rate and respiration data? Describe the process. If any data needs to be excluded, list the excluded data and motivate the exclusion.

  2. Do you observe interpersonal coordination in heart rate and respiration? Describe your control baseline, the method used to quantify coordination, and the statistical models used to infer whether coordination was higher than in the baseline. Report the results of the models.

  3. Do you observe differences in coordination between conditions? Report the models and results.

  4. Is respiration coordination a likely driver of heart rate coordination? Describe how you would test for it. Bonus points if you actually run the tests and report methods and results.

N.B. to give you a bit more data I included data from last year (Study1) and from your class (Study2). Note that synchronouns and turn-taking are the same across both studies, but the third condition is different: last year it was self-paced joint reading; this year it was the tv-series conversation. So you might want to exclude the self-paced reading (but, up to you!)

Step by step suggestions to solve the assignment

Exploring physiological signals

  • Choose one pair (one pair, three conditions)
  • Load the logs
  • Produce a plot of the participants’ respiration signal and a different one of the participants’ HR signal (for inspecting whether the data is usable) N.B: remember the slides: artifacts, downsampling, scaling. N.B. The gridExtra::grid.arrange() function allows you to display the plots side by side. E.g. grid.arrange(plot1, plot2, plot3, ncol=3)
  • Can you eye-ball which condition if any displays more physiological coordination?

  • Run crqa on heart rate and respiration data (find parameters, run crqa)
  • Does this tell you more than just eyeballing the plots?

for (file in files) {
ans_Resp = try(optimizeParam(file$Resp1S, file$Resp2S, par, min.rec = 2, max.rec = 8))
ans_HR = try(optimizeParam(file$HR1S, file$HR2S, par, min.rec = 2, max.rec = 8))
if (length(ans_Resp) > 1) {
  
Dimension_Resp[n] = ans_Resp$emddim
Radius_Resp[n] = ans_Resp$radius
Delay_Resp[n] = ans_Resp$delay
  } 
  
  else {
    
Dimension_Resp[n] = NA
Radius_Resp[n] = NA
Delay_Resp[n] = NA
    
  }
if (length(ans_HR) > 1) {
  
Dimension_HR[n] = ans_HR$emddim
Radius_HR[n] = ans_HR$radius
Delay_HR[n] = ans_HR$delay
  } 
  
  else {
    
Dimension_HR[n] = NA
Radius_HR[n] = NA
Delay_HR[n] = NA
    
  }
  
n=n+1
}
Optimal Radius Not found: try again choosing a wider radius span and larger sample sizeOptimal Radius Not found: try again choosing a wider radius span and larger sample sizeOptimal Radius Not found: try again choosing a wider radius span and larger sample sizeOptimal Radius Not found: try again choosing a wider radius span and larger sample size
for (file in files) {
ans_Resp = try(optimizeParam(file$Resp1S, file$Resp2S, par, min.rec = 2, max.rec = 8))
ans_HR = try(optimizeParam(file$HR1S, file$HR2S, par, min.rec = 2, max.rec = 8))
if (length(ans_Resp) > 1) {
  
Dimension_Resp[n] = ans_Resp$emddim
Radius_Resp[n] = ans_Resp$radius
Delay_Resp[n] = ans_Resp$delay
  } 
  
  else {
    
Dimension_Resp[n] = NA
Radius_Resp[n] = NA
Delay_Resp[n] = NA
    
  }
if (length(ans_HR) > 1) {
  
Dimension_HR[n] = ans_HR$emddim
Radius_HR[n] = ans_HR$radius
Delay_HR[n] = ans_HR$delay
  } 
  
  else {
    
Dimension_HR[n] = NA
Radius_HR[n] = NA
Delay_HR[n] = NA
    
  }
  
n=n+1
}
Optimal Radius Not found: try again choosing a wider radius span and larger sample sizeOptimal Radius Not found: try again choosing a wider radius span and larger sample sizeOptimal Radius Not found: try again choosing a wider radius span and larger sample sizeOptimal Radius Not found: try again choosing a wider radius span and larger sample size
parameters = data.frame(Dimension_Resp, Radius_Resp, Delay_Resp, Dimension_HR, Radius_HR, Delay_HR)
mean(parameters$Dimension_Resp, na.rm = TRUE) # 2
[1] 2
mean(parameters$Delay_Resp, na.rm = TRUE) # 28
[1] 28
mean(parameters$Radius_Resp, na.rm = TRUE) # 0.378
[1] 0.3778026
Results=crqa (Synch_data$Resp1S, Synch_data$Resp2S, delay=28, embed=2, radius= 0.378,normalize=0,rescale=0,mindiagline = 2,minvertline = 2)
# To plot RQA
RP=Results$RP 
RP = matrix(as.numeric(RP), nrow = ncol(RP))  
cols = c("white","blue4") 
image(RP, xlab = "", ylab = "", col = cols)

# To explore lags of coordination 
Profile=drpdfromts(Synch_data$Resp1S, Synch_data$Resp2S,datatype = 'continuous',ws=50,radius=0.443) 
timecourse = round( seq(-5000,5000,100)/1000, digit = 1) 
maxlag = Profile$maxlag/1000 
profile = Profile$profile*100 
Prof=data.frame(profile) 
ggplot(Prof, aes(timecourse,profile))+geom_line()+ geom_vline(xintercept = timecourse[maxlag], colour='red')

Systematically pre-process the data

Loop through all the files (either with a loop or with a function), check which files should be excluded, if any, and save the pre-processed time-series. Tip: plot and visually inspect the data to figure out which should be excluded. Run crqa on all the pre-processed time-series and save the output (don’t forget to add columns with study, group, condition and trial). Tip: remember to first assess optimal parameters (dimensions, delay, radius) across all timeseries. Tip: it will often fail, just take whatever parameters you get, select optimal across timeseries parameters and run crqa on all timeseries with those. Tip: double check the rr. When I ran the loop, I got very low rr, so I adjusted the radius until the average of rr across all pairs was approx. 4%.

# To create a function that can preprocess the data
preprocessing = function(data) {
  
  data = data %>% group(n = 100, method = 'greedy') %>%   dplyr::summarise(time = mean(time,na.rm=T), HR1 = mean(HR1,na.rm=T), HR2 = mean(HR2,na.rm=T), Resp1 = mean(Resp1,na.rm=T), Resp2 = mean(Resp2,na.rm=T))
  
  data$HR1=removeOuts(data$HR1,threshold)
  data$HR2=removeOuts(data$HR2,threshold)
  data$Resp1=removeOuts(data$Resp1,threshold)
  data$Resp2=removeOuts(data$Resp2,threshold)
  
  data$Resp1=scale(data$Resp1)
  data$Resp2=scale(data$Resp2)  
  data$HR1=scale(data$HR1)
  data$HR2=scale(data$HR2)
  
  return(data)
}
Advarselsbeskeder:
1: Unknown or uninitialised column: 'Study'. 
2: Unknown or uninitialised column: 'Study'. 
3: Unknown or uninitialised column: 'Study'. 
4: Unknown or uninitialised column: 'Study'. 
# To create a loop to preproces all the data
Final_data = data.frame()
filelist = list.files(path = "CleanData", pattern = ".csv")
n=1
for (file in filelist) {
  data=read_csv(paste0("CleanData/",file))
  
  Datafile=preprocessing(data)
  
  Datafile$filename = filelist[n]
  
  ans_Resp = try(optimizeParam(Datafile$Resp1, Datafile$Resp2, par, min.rec = 2, max.rec = 8))
  ans_HR = try(optimizeParam(Datafile$HR1, Datafile$HR2, par, min.rec = 2, max.rec = 8))
  
  if (length(ans_Resp) > 1) {
  
Datafile$Dimension_Resp = ans_Resp$emddim
Datafile$Radius_Resp = ans_Resp$radius
Datafile$Delay_Resp = ans_Resp$delay
  } 
  
  else {
    
Datafile$Dimension_Resp = NA
Datafile$Radius_Resp = NA
Datafile$Delay_Resp = NA
    
  }
if (length(ans_HR) > 1) {
  
Datafile$Dimension_HR = ans_HR$emddim
Datafile$Radius_HR = ans_HR$radius
Datafile$Delay_HR = ans_HR$delay
  } 
  
  else {
    
Datafile$Dimension_HR = NA
Datafile$Radius_HR = NA
Datafile$Delay_HR = NA
    
  }
  
  Final_data = rbind(Final_data, Datafile)
  
  Resp_plot= ggplot(Datafile, aes(x=time, y= Resp1)) + geom_line(color = "red") + geom_line(aes(x=time, y=Resp2), color = "blue")
  
  HR_plot = ggplot(Datafile, aes(x=time, y= HR1)) + geom_line(color = "purple") + geom_line(aes(x=time, y=HR2), color = "chartreuse4")
  
  final_plot=gridExtra::grid.arrange(Resp_plot, HR_plot)
  
  ggsave(paste0(file, ".png"), plot = final_plot, path = "Plot")
  
  n=n+1
} 
Parsed with column specification:
cols(
  time = col_double(),
  Resp1 = col_integer(),
  Resp2 = col_double(),
  ECG1 = col_double(),
  ECG2 = col_double(),
  HR1 = col_double(),
  HR2 = col_double()
)
number of columns of result is not a multiple of vector length (arg 1)31102 parsing failures.
row # A tibble: 5 x 5 col     row   col               expected actual                                     file expected   <int> <chr>                  <chr>  <chr>                                    <chr> actual 1  8110 Resp1 no trailing characters .99939 'CleanData/Study1_G1_T1_Synchronous.csv' file 2  8112 Resp1 no trailing characters .99939 'CleanData/Study1_G1_T1_Synchronous.csv' row 3  8113 Resp1 no trailing characters .99512 'CleanData/Study1_G1_T1_Synchronous.csv' col 4  8114 Resp1 no trailing characters .99207 'CleanData/Study1_G1_T1_Synchronous.csv' expected 5  8115 Resp1 no trailing characters .99237 'CleanData/Study1_G1_T1_Synchronous.csv'
... ................. ... .................................................................................... ........ .................................................................................... ...... .................................................................................... .... .................................................................................... ... .................................................................................... ... .................................................................................... ........ ....................................................................................
See problems(...) for more details.
Error : NA/NaN/Inf in foreign function call (arg 1)
Error : NA/NaN/Inf in foreign function call (arg 1)
Error : NA/NaN/Inf in foreign function call (arg 1)

|==============                                                                       |  16%    2 MB
|==============                                                                       |  16%    2 MB
|==============                                                                       |  17%    2 MB
|===============                                                                      |  17%    2 MB
|===============                                                                      |  18%    2 MB
|================                                                                     |  18%    2 MB
|================                                                                     |  19%    2 MB
|================                                                                     |  19%    2 MB
|=================                                                                    |  20%    2 MB
|=================                                                                    |  20%    3 MB
|==================                                                                   |  21%    3 MB
|==================                                                                   |  21%    3 MB
|==================                                                                   |  21%    3 MB
|===================                                                                  |  22%    3 MB
|===================                                                                  |  22%    3 MB
|====================                                                                 |  23%    3 MB
|====================                                                                 |  23%    3 MB
|====================                                                                 |  24%    3 MB
|=====================                                                                |  24%    3 MB
|=====================                                                                |  25%    3 MB
|======================                                                               |  25%    3 MB
|======================                                                               |  26%    3 MB
|======================                                                               |  26%    3 MB
|=======================                                                              |  27%    4 MB
|=======================                                                              |  27%    4 MB
|========================                                                             |  27%    4 MB
|========================                                                             |  28%    4 MB
|========================                                                             |  28%    4 MB
|=========================                                                            |  29%    4 MB
|=========================                                                            |  29%    4 MB
|==========================                                                           |  30%    4 MB
|==========================                                                           |  30%    4 MB
|==========================                                                           |  31%    4 MB
|===========================                                                          |  31%    4 MB
|===========================                                                          |  32%    4 MB
|============================                                                         |  32%    4 MB
|============================                                                         |  33%    4 MB
|============================                                                         |  33%    4 MB
|=============================                                                        |  33%    5 MB
|=============================                                                        |  34%    5 MB
|=============================                                                        |  34%    5 MB
|==============================                                                       |  35%    5 MB
|==============================                                                       |  35%    5 MB
|===============================                                                      |  36%    5 MB
|===============================                                                      |  36%    5 MB
|===============================                                                      |  37%    5 MB
|================================                                                     |  37%    5 MB
|================================                                                     |  38%    5 MB
|=================================                                                    |  38%    5 MB
|=================================                                                    |  39%    5 MB
|=================================                                                    |  39%    5 MB
|==================================                                                   |  39%    5 MB
|==================================                                                   |  40%    5 MB
|===================================                                                  |  40%    6 MB
|===================================                                                  |  41%    6 MB
|===================================                                                  |  41%    6 MB
|====================================                                                 |  42%    6 MB
|====================================                                                 |  42%    6 MB
|=====================================                                                |  43%    6 MB
|=====================================                                                |  43%    6 MB
|=====================================                                                |  44%    6 MB
|======================================                                               |  44%    6 MB
|======================================                                               |  44%    6 MB
|=======================================                                              |  45%    6 MB
|=======================================                                              |  45%    6 MB
|=======================================                                              |  46%    6 MB
|========================================                                             |  46%    6 MB
|========================================                                             |  47%    7 MB
|=========================================                                            |  47%    7 MB
|=========================================                                            |  48%    7 MB
|=========================================                                            |  48%    7 MB
|==========================================                                           |  49%    7 MB
|==========================================                                           |  49%    7 MB
|===========================================                                          |  50%    7 MB
|===========================================                                          |  50%    7 MB
|===========================================                                          |  51%    7 MB
|============================================                                         |  51%    7 MB
|============================================                                         |  51%    7 MB
|=============================================                                        |  52%    7 MB
|=============================================                                        |  52%    7 MB
|=============================================                                        |  53%    7 MB
|==============================================                                       |  53%    7 MB
|==============================================                                       |  54%    8 MB
|===============================================                                      |  54%    8 MB
|===============================================                                      |  55%    8 MB
|===============================================                                      |  55%    8 MB
|================================================                                     |  56%    8 MB
|================================================                                     |  56%    8 MB
|=================================================                                    |  57%    8 MB
|=================================================                                    |  57%    8 MB
|=================================================                                    |  58%    8 MB
|==================================================                                   |  58%    8 MB
|==================================================                                   |  58%    8 MB
|===================================================                                  |  59%    8 MB
|===================================================                                  |  59%    8 MB
|===================================================                                  |  60%    8 MB
|====================================================                                 |  60%    9 MB
|====================================================                                 |  61%    9 MB
|=====================================================                                |  61%    9 MB
|=====================================================                                |  62%    9 MB
|=====================================================                                |  62%    9 MB
|======================================================                               |  63%    9 MB
|======================================================                               |  63%    9 MB
|=======================================================                              |  64%    9 MB
|=======================================================                              |  64%    9 MB
|=======================================================                              |  64%    9 MB
|========================================================                             |  65%    9 MB
|========================================================                             |  65%    9 MB
|=========================================================                            |  66%    9 MB
|=========================================================                            |  66%    9 MB
|=========================================================                            |  67%    9 MB
|==========================================================                           |  67%   10 MB
|==========================================================                           |  68%   10 MB
|===========================================================                          |  68%   10 MB
|===========================================================                          |  69%   10 MB
|===========================================================                          |  69%   10 MB
|============================================================                         |  70%   10 MB
|============================================================                         |  70%   10 MB
|=============================================================                        |  71%   10 MB
|=============================================================                        |  71%   10 MB
|=============================================================                        |  71%   10 MB
|==============================================================                       |  72%   10 MB
|==============================================================                       |  72%   10 MB
|===============================================================                      |  73%   10 MB
|===============================================================                      |  73%   10 MB
|===============================================================                      |  74%   11 MB
|================================================================                     |  74%   11 MB
|================================================================                     |  75%   11 MB
|=================================================================                    |  75%   11 MB
|=================================================================                    |  76%   11 MB
|=================================================================                    |  76%   11 MB
|==================================================================                   |  77%   11 MB
|==================================================================                   |  77%   11 MB
|===================================================================                  |  78%   11 MB
|===================================================================                  |  78%   11 MB
|===================================================================                  |  79%   11 MB
|====================================================================                 |  79%   11 MB
|====================================================================                 |  79%   11 MB
|=====================================================================                |  80%   11 MB
|=====================================================================                |  80%   11 MB
|=====================================================================                |  81%   12 MB
|======================================================================               |  81%   12 MB
|======================================================================               |  82%   12 MB
|=======================================================================              |  82%   12 MB
|=======================================================================              |  83%   12 MB
|=======================================================================              |  83%   12 MB
|========================================================================             |  84%   12 MB
|========================================================================             |  84%   12 MB
|=========================================================================            |  85%   12 MB
|=========================================================================            |  85%   12 MB
|==========================================================================           |  86%   12 MB
|==========================================================================           |  86%   12 MB
|==========================================================================           |  87%   12 MB
|===========================================================================          |  87%   12 MB
|===========================================================================          |  87%   13 MB
|============================================================================         |  88%   13 MB
|============================================================================         |  88%   13 MB
|============================================================================         |  89%   13 MB
|=============================================================================        |  89%   13 MB
|=============================================================================        |  90%   13 MB
|==============================================================================       |  90%   13 MB
|==============================================================================       |  91%   13 MB
|==============================================================================       |  91%   13 MB
|===============================================================================      |  92%   13 MB
|===============================================================================      |  92%   13 MB
|================================================================================     |  93%   13 MB
|================================================================================     |  93%   13 MB
|================================================================================     |  93%   13 MB
|=================================================================================    |  94%   14 MB
|=================================================================================    |  94%   14 MB
|==================================================================================   |  95%   14 MB
|==================================================================================   |  95%   14 MB
|==================================================================================   |  96%   14 MB
|===================================================================================  |  96%   14 MB
|===================================================================================  |  97%   14 MB
|==================================================================================== |  97%   14 MB
|==================================================================================== |  98%   14 MB
|==================================================================================== |  98%   14 MB
|=====================================================================================|  99%   14 MB
|=====================================================================================|  99%   14 MB
|=====================================================================================|  99%   14 MB
|======================================================================================| 100%   14 MB

|=======                                                                              |   8%    1 MB
|=======                                                                              |   8%    1 MB
|=======                                                                              |   9%    1 MB
|========                                                                             |   9%    1 MB
|========                                                                             |  10%    1 MB
|=========                                                                            |  10%    1 MB
|=========                                                                            |  11%    1 MB
|=========                                                                            |  11%    1 MB
|==========                                                                           |  12%    1 MB
|==========                                                                           |  12%    1 MB
|===========                                                                          |  12%    1 MB
|===========                                                                          |  13%    1 MB
|===========                                                                          |  13%    2 MB
|============                                                                         |  14%    2 MB
|============                                                                         |  14%    2 MB
|=============                                                                        |  15%    2 MB
|=============                                                                        |  15%    2 MB
|=============                                                                        |  16%    2 MB
|==============                                                                       |  16%    2 MB
|==============                                                                       |  17%    2 MB
|===============                                                                      |  17%    2 MB
|===============                                                                      |  17%    2 MB
|===============                                                                      |  18%    2 MB
|================                                                                     |  18%    2 MB
|================                                                                     |  19%    2 MB
|=================                                                                    |  19%    2 MB
|=================                                                                    |  20%    2 MB
|=================                                                                    |  20%    3 MB
|==================                                                                   |  21%    3 MB
|==================                                                                   |  21%    3 MB
|==================                                                                   |  22%    3 MB
|===================                                                                  |  22%    3 MB
|===================                                                                  |  22%    3 MB
|====================                                                                 |  23%    3 MB
|====================                                                                 |  23%    3 MB
|====================                                                                 |  24%    3 MB
|=====================                                                                |  24%    3 MB
|=====================                                                                |  25%    3 MB
|======================                                                               |  25%    3 MB
|======================                                                               |  26%    3 MB
|======================                                                               |  26%    3 MB
|=======================                                                              |  27%    3 MB
|=======================                                                              |  27%    4 MB
|========================                                                             |  28%    4 MB
|========================                                                             |  28%    4 MB
|========================                                                             |  29%    4 MB
|=========================                                                            |  29%    4 MB
|=========================                                                            |  29%    4 MB
|==========================                                                           |  30%    4 MB
|==========================                                                           |  30%    4 MB
|==========================                                                           |  31%    4 MB
|===========================                                                          |  31%    4 MB
|===========================                                                          |  32%    4 MB
|============================                                                         |  32%    4 MB
|============================                                                         |  33%    4 MB
|============================                                                         |  33%    4 MB
|=============================                                                        |  34%    4 MB
|=============================                                                        |  34%    5 MB
|==============================                                                       |  35%    5 MB
|==============================                                                       |  35%    5 MB
|==============================                                                       |  35%    5 MB
|===============================                                                      |  36%    5 MB
|===============================                                                      |  36%    5 MB
|================================                                                     |  37%    5 MB
|================================                                                     |  37%    5 MB
|================================                                                     |  38%    5 MB
|=================================                                                    |  38%    5 MB
|=================================                                                    |  39%    5 MB
|==================================                                                   |  39%    5 MB
|==================================                                                   |  40%    5 MB
|==================================                                                   |  40%    5 MB
|===================================                                                  |  41%    5 MB
|===================================                                                  |  41%    6 MB
|====================================                                                 |  41%    6 MB
|====================================                                                 |  42%    6 MB
|====================================                                                 |  42%    6 MB
|=====================================                                                |  43%    6 MB
|=====================================                                                |  43%    6 MB
|======================================                                               |  44%    6 MB
|======================================                                               |  44%    6 MB
|======================================                                               |  45%    6 MB
|=======================================                                              |  45%    6 MB
|=======================================                                              |  46%    6 MB
|========================================                                             |  46%    6 MB
|========================================                                             |  47%    6 MB
|========================================                                             |  47%    6 MB
|=========================================                                            |  47%    6 MB
|=========================================                                            |  48%    7 MB
|==========================================                                           |  48%    7 MB
|==========================================                                           |  49%    7 MB
|==========================================                                           |  49%    7 MB
|===========================================                                          |  50%    7 MB
|===========================================                                          |  50%    7 MB
|============================================                                         |  51%    7 MB
|============================================                                         |  51%    7 MB
|============================================                                         |  52%    7 MB
|=============================================                                        |  52%    7 MB
|=============================================                                        |  53%    7 MB
|==============================================                                       |  53%    7 MB
|==============================================                                       |  53%    7 MB
|==============================================                                       |  54%    7 MB
|===============================================                                      |  54%    8 MB
|===============================================                                      |  55%    8 MB
|================================================                                     |  55%    8 MB
|================================================                                     |  56%    8 MB
|================================================                                     |  56%    8 MB
|=================================================                                    |  57%    8 MB
|=================================================                                    |  57%    8 MB
|==================================================                                   |  58%    8 MB
|==================================================                                   |  58%    8 MB
|==================================================                                   |  59%    8 MB
|===================================================                                  |  59%    8 MB
|===================================================                                  |  60%    8 MB
|====================================================                                 |  60%    8 MB
|====================================================                                 |  60%    8 MB
|====================================================                                 |  61%    8 MB
|=====================================================                                |  61%    9 MB
|=====================================================                                |  62%    9 MB
|======================================================                               |  62%    9 MB
|======================================================                               |  63%    9 MB
|======================================================                               |  63%    9 MB
|=======================================================                              |  64%    9 MB
|=======================================================                              |  64%    9 MB
|========================================================                             |  65%    9 MB
|========================================================                             |  65%    9 MB
|========================================================                             |  66%    9 MB
|=========================================================                            |  66%    9 MB
|=========================================================                            |  66%    9 MB
|==========================================================                           |  67%    9 MB
|==========================================================                           |  67%    9 MB
|==========================================================                           |  68%    9 MB
|===========================================================                          |  68%   10 MB
|===========================================================                          |  69%   10 MB
|============================================================                         |  69%   10 MB
|============================================================                         |  70%   10 MB
|============================================================                         |  70%   10 MB
|=============================================================                        |  71%   10 MB
|=============================================================                        |  71%   10 MB
|==============================================================                       |  72%   10 MB
|==============================================================                       |  72%   10 MB
|==============================================================                       |  73%   10 MB
|===============================================================                      |  73%   10 MB
|===============================================================                      |  73%   10 MB
|================================================================                     |  74%   10 MB
|================================================================                     |  74%   10 MB
|================================================================                     |  75%   10 MB
|=================================================================                    |  75%   11 MB
|=================================================================                    |  76%   11 MB
|==================================================================                   |  76%   11 MB
|==================================================================                   |  77%   11 MB
|==================================================================                   |  77%   11 MB
|===================================================================                  |  78%   11 MB
|===================================================================                  |  78%   11 MB
|====================================================================                 |  79%   11 MB
|====================================================================                 |  79%   11 MB
|====================================================================                 |  80%   11 MB
|=====================================================================                |  80%   11 MB
|=====================================================================                |  80%   11 MB
|=====================================================================                |  81%   11 MB
|======================================================================               |  81%   11 MB
|======================================================================               |  82%   12 MB
|=======================================================================              |  82%   12 MB
|=======================================================================              |  83%   12 MB
|=======================================================================              |  83%   12 MB
|========================================================================             |  84%   12 MB
|========================================================================             |  84%   12 MB
|=========================================================================            |  85%   12 MB
|=========================================================================            |  85%   12 MB
|=========================================================================            |  86%   12 MB
|==========================================================================           |  86%   12 MB
|==========================================================================           |  86%   12 MB
|===========================================================================          |  87%   12 MB
|===========================================================================          |  87%   12 MB
|===========================================================================          |  88%   12 MB
|============================================================================         |  88%   12 MB
|============================================================================         |  89%   13 MB
|=============================================================================        |  89%   13 MB
|=============================================================================        |  90%   13 MB
|=============================================================================        |  90%   13 MB
|==============================================================================       |  91%   13 MB
|==============================================================================       |  91%   13 MB
|===============================================================================      |  92%   13 MB
|===============================================================================      |  92%   13 MB
|===============================================================================      |  92%   13 MB
|================================================================================     |  93%   13 MB
|================================================================================     |  93%   13 MB
|=================================================================================    |  94%   13 MB
|=================================================================================    |  94%   13 MB
|=================================================================================    |  95%   13 MB
|==================================================================================   |  95%   13 MB
|==================================================================================   |  96%   14 MB
|===================================================================================  |  96%   14 MB
|===================================================================================  |  97%   14 MB
|===================================================================================  |  97%   14 MB
|==================================================================================== |  98%   14 MB
|==================================================================================== |  98%   14 MB
|=====================================================================================|  99%   14 MB
|=====================================================================================|  99%   14 MB
|=====================================================================================|  99%   14 MB
|======================================================================================| 100%   14 MB
Error : NA/NaN/Inf in foreign function call (arg 1)
Error : NA/NaN/Inf in foreign function call (arg 1)

# To get column with study number
for (file in 1:nrow(Final_data)){
  if (grepl("Study1", Final_data$filename[file])){
    Final_data$Study[file] = 1}
  if (grepl("Study2", Final_data$filename[file])){
    Final_data$Study[file] = 2}
}
Unknown or uninitialised column: 'Study'.
# To get group number
Final_data$Group=regmatches(Final_data$filename, regexpr("[G].*[0-9]", Final_data$filename))
Final_data$Group = gsub("[G, _, T]", "", Final_data$Group)
Final_data$Group=substr(Final_data$Group, 1, nchar(Final_data$Group)-1)
# To get trial number
Final_data$Trial=regmatches(Final_data$filename, regexpr("[T].*[0-9]", Final_data$filename))
Final_data$Trial = gsub("[T]", "", Final_data$Trial)
# To get condition
Final_data = Final_data %>% group_by(filename) %>% mutate(Condition = gsub('.{4}$', '', strsplit(filename, "_")[[1]][4]))

To get mean parameters for CRQA

mean(Final_data\(Dimension_Resp, na.rm = TRUE) # 3.12 = 3 mean(Final_data\)Radius_Resp, na.rm = TRUE) # 0.596 mean(Final_data$Delay_Resp, na.rm = TRUE) # 28.81 = 29

mean(Final_data\(Dimension_HR, na.rm = TRUE) # 14.24 = 14 mean(Final_data\)Radius_HR, na.rm = TRUE) # 1.274 mean(Final_data$Delay_HR, na.rm = TRUE) # 21.39 = 21

To perform CRQA

Creating controls: shuffled controls

loop through all pairs and conditions shuffle the timeseries (take a timeseries and rearrange its values in a random order). Tip check the sample() function run crqa and save the output. NB. which delay, embed, radius parameters should you use? statistically compare the crqa indexes in real and shuffled pairs TRICKY! Creating controls: surrogate pair controls

Per each real pair, identify at least one surrogate pair (matching one of the participants, with somebody doing the same task, but in a different pair). Tip: Celine will share a commented script Run crqa on all the surrogate pairs and save the output. NB. which delay, embed, radius parameters should you use? Test whether crqa shows a difference between real and surrogate pairs Testing effects of conditions

make a (probably underpowered) mixed model testing effects of the different conditions on heart rate and respiration coordination N.B: would it make sense to include surrogate pairs? and if so how? what would that tell you? Effects of respiration coordination on heart rate coordination

describe how you would test those. Optional: run the models and report them

LS0tCnRpdGxlOiAiUiBOb3RlYm9vayIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKIyMgQW5hbHlzaW5nIEhlYXJ0IFJhdGUgYW5kIFJlc3BpcmF0aW9uIGRhdGEKClRoZSBnb2FsIG9mIHRoaXMgYXNzaWdubWVudCBpcyB0byBmaXJzdCBmYW1pbGlhcml6ZSB5b3Ugd2l0aCBoZWFydCByYXRlLCBhbmQgcmVzcGlyYXRpb24gZGF0YSBhbmQgdGhlaXIgcHJlcHJvY2Vzc2luZy4gVGhlIHNlY29uZCBwYXJ0IGV4cGxvcmVzIGhvdyB0byBhbmFseXplIGludGVycGVyc29uYWwgY29vcmRpbmF0aW9uIG9mIHRoZXNlIHNpZ25hbHMuCgpUaGVzZSBhcmUgdGhlIHF1ZXN0aW9ucyB5b3UgbmVlZCB0byBiZSBhYmxlIHRvIGFuc3dlciBhdCB0aGUgZW5kIG9mIHRoZSBhc3NpZ25tZW50IChha2EgdGhhdCB5b3UgbmVlZCB0byBzdWJtaXQgYXMgcGFydCBvZiB0aGUgcG9ydGZvbGlvKQoKMSkgSG93IGRvIHlvdSBwcmVwcm9jZXNzIGhlYXJ0IHJhdGUgYW5kIHJlc3BpcmF0aW9uIGRhdGE/IERlc2NyaWJlIHRoZSBwcm9jZXNzLiBJZiBhbnkgZGF0YSBuZWVkcyB0byBiZSBleGNsdWRlZCwgbGlzdCB0aGUgZXhjbHVkZWQgZGF0YSBhbmQgbW90aXZhdGUgdGhlIGV4Y2x1c2lvbi4KCjIpIERvIHlvdSBvYnNlcnZlIGludGVycGVyc29uYWwgY29vcmRpbmF0aW9uIGluIGhlYXJ0IHJhdGUgYW5kIHJlc3BpcmF0aW9uPyBEZXNjcmliZSB5b3VyIGNvbnRyb2wgYmFzZWxpbmUsIHRoZSBtZXRob2QgdXNlZCB0byBxdWFudGlmeSBjb29yZGluYXRpb24sIGFuZCB0aGUgc3RhdGlzdGljYWwgbW9kZWxzIHVzZWQgdG8gaW5mZXIgd2hldGhlciBjb29yZGluYXRpb24gd2FzIGhpZ2hlciB0aGFuIGluIHRoZSBiYXNlbGluZS4gUmVwb3J0IHRoZSByZXN1bHRzIG9mIHRoZSBtb2RlbHMuCgozKSBEbyB5b3Ugb2JzZXJ2ZSBkaWZmZXJlbmNlcyBpbiBjb29yZGluYXRpb24gYmV0d2VlbiBjb25kaXRpb25zPyBSZXBvcnQgdGhlIG1vZGVscyBhbmQgcmVzdWx0cy4KCjQpIElzIHJlc3BpcmF0aW9uIGNvb3JkaW5hdGlvbiBhIGxpa2VseSBkcml2ZXIgb2YgaGVhcnQgcmF0ZSBjb29yZGluYXRpb24/IERlc2NyaWJlIGhvdyB5b3Ugd291bGQgdGVzdCBmb3IgaXQuIEJvbnVzIHBvaW50cyBpZiB5b3UgYWN0dWFsbHkgcnVuIHRoZSB0ZXN0cyBhbmQgcmVwb3J0IG1ldGhvZHMgYW5kIHJlc3VsdHMuCgpOLkIuIHRvIGdpdmUgeW91IGEgYml0IG1vcmUgZGF0YSBJIGluY2x1ZGVkIGRhdGEgZnJvbSBsYXN0IHllYXIgKFN0dWR5MSkgYW5kIGZyb20geW91ciBjbGFzcyAoU3R1ZHkyKS4gTm90ZSB0aGF0IHN5bmNocm9ub3VucyBhbmQgdHVybi10YWtpbmcgYXJlIHRoZSBzYW1lIGFjcm9zcyBib3RoIHN0dWRpZXMsIGJ1dCB0aGUgdGhpcmQgY29uZGl0aW9uIGlzIGRpZmZlcmVudDogbGFzdCB5ZWFyIGl0IHdhcyBzZWxmLXBhY2VkIGpvaW50IHJlYWRpbmc7IHRoaXMgeWVhciBpdCB3YXMgdGhlIHR2LXNlcmllcyBjb252ZXJzYXRpb24uIFNvIHlvdSBtaWdodCB3YW50IHRvIGV4Y2x1ZGUgdGhlIHNlbGYtcGFjZWQgcmVhZGluZyAoYnV0LCB1cCB0byB5b3UhKQoKIyMgU3RlcCBieSBzdGVwIHN1Z2dlc3Rpb25zIHRvIHNvbHZlIHRoZSBhc3NpZ25tZW50CgojIyMgRXhwbG9yaW5nIHBoeXNpb2xvZ2ljYWwgc2lnbmFscwoKLSBDaG9vc2Ugb25lIHBhaXIgKG9uZSBwYWlyLCB0aHJlZSBjb25kaXRpb25zKQotIExvYWQgdGhlIGxvZ3MKLSBQcm9kdWNlIGEgcGxvdCBvZiB0aGUgcGFydGljaXBhbnRzJyByZXNwaXJhdGlvbiBzaWduYWwgYW5kIGEgZGlmZmVyZW50IG9uZSBvZiB0aGUgcGFydGljaXBhbnRzJyBIUiBzaWduYWwgKGZvciBpbnNwZWN0aW5nIHdoZXRoZXIgdGhlIGRhdGEgaXMgdXNhYmxlKQogIE4uQjogcmVtZW1iZXIgdGhlIHNsaWRlczogYXJ0aWZhY3RzLCBkb3duc2FtcGxpbmcsIHNjYWxpbmcuCiAgTi5CLiBUaGUgZ3JpZEV4dHJhOjpncmlkLmFycmFuZ2UoKSBmdW5jdGlvbiBhbGxvd3MgeW91IHRvIGRpc3BsYXkgdGhlIHBsb3RzIHNpZGUgYnkgc2lkZS4gRS5nLiBncmlkLmFycmFuZ2UocGxvdDEsIHBsb3QyLCBwbG90MywgbmNvbD0zKQotIENhbiB5b3UgZXllLWJhbGwgd2hpY2ggY29uZGl0aW9uIGlmIGFueSBkaXNwbGF5cyBtb3JlIHBoeXNpb2xvZ2ljYWwgY29vcmRpbmF0aW9uPwoKLSBSdW4gY3JxYSBvbiBoZWFydCByYXRlIGFuZCByZXNwaXJhdGlvbiBkYXRhIChmaW5kIHBhcmFtZXRlcnMsIHJ1biBjcnFhKQotIERvZXMgdGhpcyB0ZWxsIHlvdSBtb3JlIHRoYW4ganVzdCBleWViYWxsaW5nIHRoZSBwbG90cz8KCmBgYHtyfQoKIyBTZXQgd29ya2luZyBkaXJlY3RvcnkKc2V0d2QoIn4vT25lRHJpdmUgLSBBYXJodXMgdW5pdmVyc2l0ZXQvQVUtQ29nbml0aXZlIFNjaWVuY2UvM3JkIFNlbWVzdGVyL0V4cGVyaW1lbnRhbCBNZXRob2RzIDMvRXhlcmNpc2UvQXNzaWdubWVudHMvQXNzaWdubWVudF8zLyIpCgojIExvYWQgcmVsZXZhbnQgcGFja2FnZXMKbGlicmFyeShnZ3Bsb3QyKTsgbGlicmFyeShncm91cGRhdGEyKTsgbGlicmFyeShkcGx5cik7IGxpYnJhcnkoY3JxYSk7IGxpYnJhcnkoc3RyaW5ncik7IGxpYnJhcnkocmVhZHIpCgojIExvYWQgaW4gZGF0YWZpbGUKU3luY2hfZGF0YT1yZWFkLmNzdigiQ2xlYW5EYXRhL1N0dWR5Ml9HNV9UMV9TeW5jaHJvbm91cy5jc3YiKQpUdXJuX2RhdGE9cmVhZC5jc3YoIkNsZWFuRGF0YS9TdHVkeTJfRzVfVDJfVHVyblRha2luZy5jc3YiKQpDb252X2RhdGE9cmVhZC5jc3YoIkNsZWFuRGF0YS9TdHVkeTJfRzVfVDNfQ29udmVyc2F0aW9uLmNzdiIpCgojIFRvIGNyZWF0ZSBwbG90cyBmb3IgcmVzcGlyYXRpb24gCmdncGxvdChDb252X2RhdGEsIGFlcyh4PXRpbWUsIHk9IFJlc3AxKSkgKyBnZW9tX2xpbmUoY29sb3IgPSAiYmx1ZSIpICsgZ2VvbV9saW5lKGFlcyh4PXRpbWUsIHk9UmVzcDIsIGNvbG9yID0icmVkIikpICsgdGhlbWUobGVnZW5kLnBvc2l0aW9uPSJub25lIikKZ2dwbG90KFR1cm5fZGF0YSwgYWVzKHg9dGltZSwgeT0gUmVzcDEpKSArIGdlb21fbGluZShjb2xvciA9ICJibHVlIikgKyBnZW9tX2xpbmUoYWVzKHg9dGltZSwgeT1SZXNwMiwgY29sb3IgPSJyZWQiKSkgKyB0aGVtZShsZWdlbmQucG9zaXRpb249Im5vbmUiKQpnZ3Bsb3QoU3luY2hfZGF0YSwgYWVzKHg9dGltZSwgeT0gUmVzcDEpKSArIGdlb21fbGluZShjb2xvciA9ICJibHVlIikgKyBnZW9tX2xpbmUoYWVzKHg9dGltZSwgeT1SZXNwMiwgY29sb3IgPSJyZWQiKSkgKyB0aGVtZShsZWdlbmQucG9zaXRpb249Im5vbmUiKQoKCiMgVG8gY3JlYXRlIHBsb3RzIGZvciBoZWFydCByYXRlCmdncGxvdChDb252X2RhdGEsIGFlcyh4PXRpbWUsIHk9IEhSMSkpICsgZ2VvbV9saW5lKGNvbG9yID0gInB1cnBsZSIpICsgZ2VvbV9saW5lKGFlcyh4PXRpbWUsIHk9SFIyKSwgY29sb3IgPSAiY2hhcnRyZXVzZTQiKQpnZ3Bsb3QoVHVybl9kYXRhLCBhZXMoeD10aW1lLCB5PSBIUjEpKSArIGdlb21fbGluZShjb2xvciA9ICJwdXJwbGUiKSArIGdlb21fbGluZShhZXMoeD10aW1lLCB5PUhSMiksIGNvbG9yID0gImNoYXJ0cmV1c2U0IikKZ2dwbG90KFN5bmNoX2RhdGEsIGFlcyh4PXRpbWUsIHk9IEhSMSkpICsgZ2VvbV9saW5lKGNvbG9yID0gInB1cnBsZSIpICsgZ2VvbV9saW5lKGFlcyh4PXRpbWUsIHk9SFIyKSwgY29sb3IgPSAiY2hhcnRyZXVzZTQiKQoKIyBUbyBkb3duc2FtcGxlIGRhdGEKQ29udl9kYXRhID0gQ29udl9kYXRhICU+JSBncm91cChuID0gMTAwLCBtZXRob2QgPSAnZ3JlZWR5JykgJT4lICAgZHBseXI6OnN1bW1hcmlzZSh0aW1lID0gbWVhbih0aW1lLG5hLnJtPVQpLCBIUjEgPSBtZWFuKEhSMSxuYS5ybT1UKSwgSFIyID0gbWVhbihIUjIsbmEucm09VCksIFJlc3AxID0gbWVhbihSZXNwMSxuYS5ybT1UKSwgUmVzcDIgPSBtZWFuKFJlc3AyLG5hLnJtPVQpKQoKU3luY2hfZGF0YSA9IFN5bmNoX2RhdGEgJT4lIGdyb3VwKG4gPSAxMDAsIG1ldGhvZCA9ICdncmVlZHknKSAlPiUgICBkcGx5cjo6c3VtbWFyaXNlKHRpbWUgPSBtZWFuKHRpbWUsbmEucm09VCksIEhSMSA9IG1lYW4oSFIxLG5hLnJtPVQpLCBIUjIgPSBtZWFuKEhSMixuYS5ybT1UKSwgUmVzcDEgPSBtZWFuKFJlc3AxLG5hLnJtPVQpLCBSZXNwMiA9IG1lYW4oUmVzcDIsbmEucm09VCkpCgpUdXJuX2RhdGEgPSBUdXJuX2RhdGEgJT4lIGdyb3VwKG4gPSAxMDAsIG1ldGhvZCA9ICdncmVlZHknKSAlPiUgICBkcGx5cjo6c3VtbWFyaXNlKHRpbWUgPSBtZWFuKHRpbWUsbmEucm09VCksIEhSMSA9IG1lYW4oSFIxLG5hLnJtPVQpLCBIUjIgPSBtZWFuKEhSMixuYS5ybT1UKSwgUmVzcDEgPSBtZWFuKFJlc3AxLG5hLnJtPVQpLCBSZXNwMiA9IG1lYW4oUmVzcDIsbmEucm09VCkpCgojIFRvIHJlbW92ZSBvdXRsaWVycwpyZW1vdmVPdXRzIDwtIGZ1bmN0aW9uKHRzLHRocmVzaG9sZCl7CiAgdHNbdHMgPiAobWVhbih0cyxuYS5ybT1UKSArICAgICAgICAgICAgICAodGhyZXNob2xkKnNkKHRzLG5hLnJtPVQpKSkgfCAgdHMgPCAobWVhbih0cyxuYS5ybT1UKSAtICAgICAgICAgICAodGhyZXNob2xkKnNkKHRzLG5hLnJtPVQpKSldID0gbWVhbih0cyxuYS5ybT1UKSAgIAogIHJldHVybih0cyl9Cgp0aHJlc2hvbGQ9Mi41IAoKQ29udl9kYXRhJEhSMT1yZW1vdmVPdXRzKENvbnZfZGF0YSRIUjEsdGhyZXNob2xkKQpDb252X2RhdGEkSFIyPXJlbW92ZU91dHMoQ29udl9kYXRhJEhSMix0aHJlc2hvbGQpClR1cm5fZGF0YSRIUjE9cmVtb3ZlT3V0cyhUdXJuX2RhdGEkSFIxLCB0aHJlc2hvbGQpClR1cm5fZGF0YSRIUjI9cmVtb3ZlT3V0cyhUdXJuX2RhdGEkSFIyLCB0aHJlc2hvbGQpClN5bmNoX2RhdGEkSFIxPXJlbW92ZU91dHMoU3luY2hfZGF0YSRIUjEsIHRocmVzaG9sZCkKU3luY2hfZGF0YSRIUjI9cmVtb3ZlT3V0cyhTeW5jaF9kYXRhJEhSMiwgdGhyZXNob2xkKQoKQ29udl9kYXRhJFJlc3AxPXJlbW92ZU91dHMoQ29udl9kYXRhJFJlc3AxLHRocmVzaG9sZCkKQ29udl9kYXRhJFJlc3AyPXJlbW92ZU91dHMoQ29udl9kYXRhJFJlc3AyLHRocmVzaG9sZCkKVHVybl9kYXRhJFJlc3AxPXJlbW92ZU91dHMoVHVybl9kYXRhJFJlc3AxLCB0aHJlc2hvbGQpClR1cm5fZGF0YSRSZXNwMj1yZW1vdmVPdXRzKFR1cm5fZGF0YSRSZXNwMiwgdGhyZXNob2xkKQpTeW5jaF9kYXRhJFJlc3AxPXJlbW92ZU91dHMoU3luY2hfZGF0YSRSZXNwMSwgdGhyZXNob2xkKQpTeW5jaF9kYXRhJFJlc3AyPXJlbW92ZU91dHMoU3luY2hfZGF0YSRSZXNwMiwgdGhyZXNob2xkKQoKIyBUbyBzY2FsZSBkYXRhCkNvbnZfZGF0YSRSZXNwMVM9c2NhbGUoQ29udl9kYXRhJFJlc3AxKQpDb252X2RhdGEkUmVzcDJTPXNjYWxlKENvbnZfZGF0YSRSZXNwMikgIApDb252X2RhdGEkSFIxUz1zY2FsZShDb252X2RhdGEkSFIxKQpDb252X2RhdGEkSFIyUz1zY2FsZShDb252X2RhdGEkSFIyKQoKVHVybl9kYXRhJFJlc3AxUz1zY2FsZShUdXJuX2RhdGEkUmVzcDEpClR1cm5fZGF0YSRSZXNwMlM9c2NhbGUoVHVybl9kYXRhJFJlc3AyKSAgClR1cm5fZGF0YSRIUjFTPXNjYWxlKFR1cm5fZGF0YSRIUjEpClR1cm5fZGF0YSRIUjJTPXNjYWxlKFR1cm5fZGF0YSRIUjIpCgpTeW5jaF9kYXRhJFJlc3AxUz1zY2FsZShTeW5jaF9kYXRhJFJlc3AxKQpTeW5jaF9kYXRhJFJlc3AyUz1zY2FsZShTeW5jaF9kYXRhJFJlc3AyKSAgClN5bmNoX2RhdGEkSFIxUz1zY2FsZShTeW5jaF9kYXRhJEhSMSkKU3luY2hfZGF0YSRIUjJTPXNjYWxlKFN5bmNoX2RhdGEkSFIyKQoKIyBUbyBjcmVhdGUgSFIgcGxvdCBmb3Igc2NsYWVkIGRhdGEKcGxvdDEgPSBnZ3Bsb3QoQ29udl9kYXRhLCBhZXMoeD10aW1lLCB5PSBIUjFTKSkgKyBnZW9tX2xpbmUoY29sb3IgPSAicHVycGxlIikgKyBnZW9tX2xpbmUoYWVzKHg9dGltZSwgeT1IUjJTKSwgY29sb3IgPSAiY2hhcnRyZXVzZTQiKQpwbG90MiA9IGdncGxvdChUdXJuX2RhdGEsIGFlcyh4PXRpbWUsIHk9IEhSMVMpKSArIGdlb21fbGluZShjb2xvciA9ICJwdXJwbGUiKSArIGdlb21fbGluZShhZXMoeD10aW1lLCB5PUhSMlMpLCBjb2xvciA9ICJjaGFydHJldXNlNCIpCnBsb3QzID0gZ2dwbG90KFN5bmNoX2RhdGEsIGFlcyh4PXRpbWUsIHk9IEhSMVMpKSArIGdlb21fbGluZShjb2xvciA9ICJwdXJwbGUiKSArIGdlb21fbGluZShhZXMoeD10aW1lLCB5PUhSMlMpLCBjb2xvciA9ICJjaGFydHJldXNlNCIpCgojIFRvIG1ha2Ugb25lIGdyaWQgd2l0aCBhbGwgSFIgcGxvdHMKZ3JpZEV4dHJhOjpncmlkLmFycmFuZ2UocGxvdDEsIHBsb3QyLCBwbG90MykKCnBsb3Q0ID0gZ2dwbG90KENvbnZfZGF0YSwgYWVzKHg9dGltZSwgeT0gUmVzcDFTKSkgKyBnZW9tX2xpbmUoY29sb3IgPSAicmVkIikgKyBnZW9tX2xpbmUoYWVzKHg9dGltZSwgeT1SZXNwMlMpLCBjb2xvciA9ICJibHVlIikKcGxvdDUgPSBnZ3Bsb3QoVHVybl9kYXRhLCBhZXMoeD10aW1lLCB5PSBSZXNwMVMpKSArIGdlb21fbGluZShjb2xvciA9ICJyZWQiKSArIGdlb21fbGluZShhZXMoeD10aW1lLCB5PVJlc3AyUyksIGNvbG9yID0gImJsdWUiKQpwbG90NiA9IGdncGxvdChTeW5jaF9kYXRhLCBhZXMoeD10aW1lLCB5PSBSZXNwMVMpKSArIGdlb21fbGluZShjb2xvciA9ICJyZWQiKSArIGdlb21fbGluZShhZXMoeD10aW1lLCB5PVJlc3AyUyksIGNvbG9yID0gImJsdWUiKQoKIyBUbyBtYWtlIG9uZSBncmlkIHdpdGggYWxsIFJlc3BpcmF0aW9uIHBsb3RzCmdyaWRFeHRyYTo6Z3JpZC5hcnJhbmdlKHBsb3Q0LCBwbG90NSwgcGxvdDYpCgojIFRvIHBlcmZvcm0gQ1JRQQpwYXIgPSBsaXN0KGxnTSA9ICA1MCwgc3RlcHMgPSBzZXEoMSwgNiwgMSksICByYWRpdXNzcGFuID0gMTAwLCAgcmFkaXVzc2FtcGxlID0gNDAsIG5vcm1hbGl6ZSA9IDAsICByZXNjYWxlID0gMCwgIG1pbmRpYWdsaW5lID0gMiwgIG1pbnZlcnRsaW5lID0gMiwgIHR3ID0gMCwgIHdoaXRlbGluZSA9IEZBTFNFLCAgcmVjcHQgPSBGQUxTRSwgIGZubnBlcmNlbnQgPSAxMCwgIHR5cGVhbWkgPSAibWluZGlwIikKCiMgVG8gY3JlYXRlIGEgbG9vcCB0byBnZXQgcGFyYW10ZXJzIApmaWxlcyA9IGxpc3QoQ29udl9kYXRhLCBTeW5jaF9kYXRhLCBUdXJuX2RhdGEpCgpEaW1lbnNpb25fUmVzcCA9IE5VTEwKUmFkaXVzX1Jlc3AgPSBOVUxMCkRlbGF5X1Jlc3AgPSBOVUxMCkRpbWVuc2lvbl9IUiA9IE5VTEwKUmFkaXVzX0hSID0gTlVMTApEZWxheV9IUiA9IE5VTEwKCm49MQoKZm9yIChmaWxlIGluIGZpbGVzKSB7CmFuc19SZXNwID0gdHJ5KG9wdGltaXplUGFyYW0oZmlsZSRSZXNwMVMsIGZpbGUkUmVzcDJTLCBwYXIsIG1pbi5yZWMgPSAyLCBtYXgucmVjID0gOCkpCmFuc19IUiA9IHRyeShvcHRpbWl6ZVBhcmFtKGZpbGUkSFIxUywgZmlsZSRIUjJTLCBwYXIsIG1pbi5yZWMgPSAyLCBtYXgucmVjID0gOCkpCgppZiAobGVuZ3RoKGFuc19SZXNwKSA+IDEpIHsKICAKRGltZW5zaW9uX1Jlc3Bbbl0gPSBhbnNfUmVzcCRlbWRkaW0KUmFkaXVzX1Jlc3Bbbl0gPSBhbnNfUmVzcCRyYWRpdXMKRGVsYXlfUmVzcFtuXSA9IGFuc19SZXNwJGRlbGF5CiAgfSAKICAKICBlbHNlIHsKICAgIApEaW1lbnNpb25fUmVzcFtuXSA9IE5BClJhZGl1c19SZXNwW25dID0gTkEKRGVsYXlfUmVzcFtuXSA9IE5BCiAgICAKICB9CgppZiAobGVuZ3RoKGFuc19IUikgPiAxKSB7CiAgCkRpbWVuc2lvbl9IUltuXSA9IGFuc19IUiRlbWRkaW0KUmFkaXVzX0hSW25dID0gYW5zX0hSJHJhZGl1cwpEZWxheV9IUltuXSA9IGFuc19IUiRkZWxheQogIH0gCiAgCiAgZWxzZSB7CiAgICAKRGltZW5zaW9uX0hSW25dID0gTkEKUmFkaXVzX0hSW25dID0gTkEKRGVsYXlfSFJbbl0gPSBOQQogICAgCiAgfQogIApuPW4rMQoKfQoKcGFyYW1ldGVycyA9IGRhdGEuZnJhbWUoRGltZW5zaW9uX1Jlc3AsIFJhZGl1c19SZXNwLCBEZWxheV9SZXNwLCBEaW1lbnNpb25fSFIsIFJhZGl1c19IUiwgRGVsYXlfSFIpCgoKbWVhbihwYXJhbWV0ZXJzJERpbWVuc2lvbl9SZXNwLCBuYS5ybSA9IFRSVUUpICMgMgptZWFuKHBhcmFtZXRlcnMkRGVsYXlfUmVzcCwgbmEucm0gPSBUUlVFKSAjIDI4Cm1lYW4ocGFyYW1ldGVycyRSYWRpdXNfUmVzcCwgbmEucm0gPSBUUlVFKSAjIDAuMzc4CgpSZXN1bHRzPWNycWEgKFN5bmNoX2RhdGEkUmVzcDFTLCBTeW5jaF9kYXRhJFJlc3AyUywgZGVsYXk9MjgsIGVtYmVkPTIsIHJhZGl1cz0gMC4zNzgsbm9ybWFsaXplPTAscmVzY2FsZT0wLG1pbmRpYWdsaW5lID0gMixtaW52ZXJ0bGluZSA9IDIpCgojIFRvIHBsb3QgUlFBClJQPVJlc3VsdHMkUlAgClJQID0gbWF0cml4KGFzLm51bWVyaWMoUlApLCBucm93ID0gbmNvbChSUCkpICAKY29scyA9IGMoIndoaXRlIiwiYmx1ZTQiKSAKaW1hZ2UoUlAsIHhsYWIgPSAiIiwgeWxhYiA9ICIiLCBjb2wgPSBjb2xzKQoKIyBUbyBleHBsb3JlIGxhZ3Mgb2YgY29vcmRpbmF0aW9uIApQcm9maWxlPWRycGRmcm9tdHMoU3luY2hfZGF0YSRSZXNwMVMsIFN5bmNoX2RhdGEkUmVzcDJTLGRhdGF0eXBlID0gJ2NvbnRpbnVvdXMnLHdzPTUwLHJhZGl1cz0wLjQ0MykgCnRpbWVjb3Vyc2UgPSByb3VuZCggc2VxKC01MDAwLDUwMDAsMTAwKS8xMDAwLCBkaWdpdCA9IDEpIAptYXhsYWcgPSBQcm9maWxlJG1heGxhZy8xMDAwIApwcm9maWxlID0gUHJvZmlsZSRwcm9maWxlKjEwMCAKUHJvZj1kYXRhLmZyYW1lKHByb2ZpbGUpIApnZ3Bsb3QoUHJvZiwgYWVzKHRpbWVjb3Vyc2UscHJvZmlsZSkpK2dlb21fbGluZSgpKyBnZW9tX3ZsaW5lKHhpbnRlcmNlcHQgPSB0aW1lY291cnNlW21heGxhZ10sIGNvbG91cj0ncmVkJykKYGBgClN5c3RlbWF0aWNhbGx5IHByZS1wcm9jZXNzIHRoZSBkYXRhCgpMb29wIHRocm91Z2ggYWxsIHRoZSBmaWxlcyAoZWl0aGVyIHdpdGggYSBsb29wIG9yIHdpdGggYSBmdW5jdGlvbiksIGNoZWNrIHdoaWNoIGZpbGVzIHNob3VsZCBiZSBleGNsdWRlZCwgaWYgYW55LCBhbmQgc2F2ZSB0aGUgcHJlLXByb2Nlc3NlZCB0aW1lLXNlcmllcy4gVGlwOiBwbG90IGFuZCB2aXN1YWxseSBpbnNwZWN0IHRoZSBkYXRhIHRvIGZpZ3VyZSBvdXQgd2hpY2ggc2hvdWxkIGJlIGV4Y2x1ZGVkLgpSdW4gY3JxYSBvbiBhbGwgdGhlIHByZS1wcm9jZXNzZWQgdGltZS1zZXJpZXMgYW5kIHNhdmUgdGhlIG91dHB1dCAoZG9uJ3QgZm9yZ2V0IHRvIGFkZCBjb2x1bW5zIHdpdGggc3R1ZHksIGdyb3VwLCBjb25kaXRpb24gYW5kIHRyaWFsKS4gVGlwOiByZW1lbWJlciB0byBmaXJzdCBhc3Nlc3Mgb3B0aW1hbCBwYXJhbWV0ZXJzIChkaW1lbnNpb25zLCBkZWxheSwgcmFkaXVzKSBhY3Jvc3MgYWxsIHRpbWVzZXJpZXMuIFRpcDogaXQgd2lsbCBvZnRlbiBmYWlsLCBqdXN0IHRha2Ugd2hhdGV2ZXIgcGFyYW1ldGVycyB5b3UgZ2V0LCBzZWxlY3Qgb3B0aW1hbCBhY3Jvc3MgdGltZXNlcmllcyBwYXJhbWV0ZXJzIGFuZCBydW4gY3JxYSBvbiBhbGwgdGltZXNlcmllcyB3aXRoIHRob3NlLiBUaXA6IGRvdWJsZSBjaGVjayB0aGUgcnIuIFdoZW4gSSByYW4gdGhlIGxvb3AsIEkgZ290IHZlcnkgbG93IHJyLCBzbyBJIGFkanVzdGVkIHRoZSByYWRpdXMgdW50aWwgdGhlIGF2ZXJhZ2Ugb2YgcnIgYWNyb3NzIGFsbCBwYWlycyB3YXMgYXBwcm94LiA0JS4KYGBge3J9CiMgVG8gY3JlYXRlIGEgZnVuY3Rpb24gdGhhdCBjYW4gcHJlcHJvY2VzcyB0aGUgZGF0YQpwcmVwcm9jZXNzaW5nID0gZnVuY3Rpb24oZGF0YSkgewogIAogIGRhdGEgPSBkYXRhICU+JSBncm91cChuID0gMTAwLCBtZXRob2QgPSAnZ3JlZWR5JykgJT4lICAgZHBseXI6OnN1bW1hcmlzZSh0aW1lID0gbWVhbih0aW1lLG5hLnJtPVQpLCBIUjEgPSBtZWFuKEhSMSxuYS5ybT1UKSwgSFIyID0gbWVhbihIUjIsbmEucm09VCksIFJlc3AxID0gbWVhbihSZXNwMSxuYS5ybT1UKSwgUmVzcDIgPSBtZWFuKFJlc3AyLG5hLnJtPVQpKQogIAogIGRhdGEkSFIxPXJlbW92ZU91dHMoZGF0YSRIUjEsdGhyZXNob2xkKQogIGRhdGEkSFIyPXJlbW92ZU91dHMoZGF0YSRIUjIsdGhyZXNob2xkKQogIGRhdGEkUmVzcDE9cmVtb3ZlT3V0cyhkYXRhJFJlc3AxLHRocmVzaG9sZCkKICBkYXRhJFJlc3AyPXJlbW92ZU91dHMoZGF0YSRSZXNwMix0aHJlc2hvbGQpCiAgCiAgZGF0YSRSZXNwMT1zY2FsZShkYXRhJFJlc3AxKQogIGRhdGEkUmVzcDI9c2NhbGUoZGF0YSRSZXNwMikgIAogIGRhdGEkSFIxPXNjYWxlKGRhdGEkSFIxKQogIGRhdGEkSFIyPXNjYWxlKGRhdGEkSFIyKQogIAogIHJldHVybihkYXRhKQp9CgojIFRvIGNyZWF0ZSBhIGxvb3AgdG8gcHJlcHJvY2VzIGFsbCB0aGUgZGF0YQpGaW5hbF9kYXRhID0gZGF0YS5mcmFtZSgpCgpmaWxlbGlzdCA9IGxpc3QuZmlsZXMocGF0aCA9ICJDbGVhbkRhdGEiLCBwYXR0ZXJuID0gIi5jc3YiKQoKbj0xCgpmb3IgKGZpbGUgaW4gZmlsZWxpc3QpIHsKICBkYXRhPXJlYWRfY3N2KHBhc3RlMCgiQ2xlYW5EYXRhLyIsZmlsZSkpCiAgCiAgRGF0YWZpbGU9cHJlcHJvY2Vzc2luZyhkYXRhKQogIAogIERhdGFmaWxlJGZpbGVuYW1lID0gZmlsZWxpc3Rbbl0KICAKICBhbnNfUmVzcCA9IHRyeShvcHRpbWl6ZVBhcmFtKERhdGFmaWxlJFJlc3AxLCBEYXRhZmlsZSRSZXNwMiwgcGFyLCBtaW4ucmVjID0gMiwgbWF4LnJlYyA9IDgpKQogIGFuc19IUiA9IHRyeShvcHRpbWl6ZVBhcmFtKERhdGFmaWxlJEhSMSwgRGF0YWZpbGUkSFIyLCBwYXIsIG1pbi5yZWMgPSAyLCBtYXgucmVjID0gOCkpCiAgCiAgaWYgKGxlbmd0aChhbnNfUmVzcCkgPiAxKSB7CiAgCkRhdGFmaWxlJERpbWVuc2lvbl9SZXNwID0gYW5zX1Jlc3AkZW1kZGltCkRhdGFmaWxlJFJhZGl1c19SZXNwID0gYW5zX1Jlc3AkcmFkaXVzCkRhdGFmaWxlJERlbGF5X1Jlc3AgPSBhbnNfUmVzcCRkZWxheQogIH0gCiAgCiAgZWxzZSB7CiAgICAKRGF0YWZpbGUkRGltZW5zaW9uX1Jlc3AgPSBOQQpEYXRhZmlsZSRSYWRpdXNfUmVzcCA9IE5BCkRhdGFmaWxlJERlbGF5X1Jlc3AgPSBOQQogICAgCiAgfQoKaWYgKGxlbmd0aChhbnNfSFIpID4gMSkgewogIApEYXRhZmlsZSREaW1lbnNpb25fSFIgPSBhbnNfSFIkZW1kZGltCkRhdGFmaWxlJFJhZGl1c19IUiA9IGFuc19IUiRyYWRpdXMKRGF0YWZpbGUkRGVsYXlfSFIgPSBhbnNfSFIkZGVsYXkKICB9IAogIAogIGVsc2UgewogICAgCkRhdGFmaWxlJERpbWVuc2lvbl9IUiA9IE5BCkRhdGFmaWxlJFJhZGl1c19IUiA9IE5BCkRhdGFmaWxlJERlbGF5X0hSID0gTkEKICAgIAogIH0KICAKICBGaW5hbF9kYXRhID0gcmJpbmQoRmluYWxfZGF0YSwgRGF0YWZpbGUpCiAgCiAgUmVzcF9wbG90PSBnZ3Bsb3QoRGF0YWZpbGUsIGFlcyh4PXRpbWUsIHk9IFJlc3AxKSkgKyBnZW9tX2xpbmUoY29sb3IgPSAicmVkIikgKyBnZW9tX2xpbmUoYWVzKHg9dGltZSwgeT1SZXNwMiksIGNvbG9yID0gImJsdWUiKQogIAogIEhSX3Bsb3QgPSBnZ3Bsb3QoRGF0YWZpbGUsIGFlcyh4PXRpbWUsIHk9IEhSMSkpICsgZ2VvbV9saW5lKGNvbG9yID0gInB1cnBsZSIpICsgZ2VvbV9saW5lKGFlcyh4PXRpbWUsIHk9SFIyKSwgY29sb3IgPSAiY2hhcnRyZXVzZTQiKQogIAogIGZpbmFsX3Bsb3Q9Z3JpZEV4dHJhOjpncmlkLmFycmFuZ2UoUmVzcF9wbG90LCBIUl9wbG90KQogIAogIGdnc2F2ZShwYXN0ZTAoZmlsZSwgIi5wbmciKSwgcGxvdCA9IGZpbmFsX3Bsb3QsIHBhdGggPSAiUGxvdCIpCiAgCiAgbj1uKzEKfSAKCgojIFRvIGdldCBjb2x1bW4gd2l0aCBzdHVkeSBudW1iZXIKCmZvciAoZmlsZSBpbiAxOm5yb3coRmluYWxfZGF0YSkpewogIGlmIChncmVwbCgiU3R1ZHkxIiwgRmluYWxfZGF0YSRmaWxlbmFtZVtmaWxlXSkpewogICAgRmluYWxfZGF0YSRTdHVkeVtmaWxlXSA9IDF9CiAgaWYgKGdyZXBsKCJTdHVkeTIiLCBGaW5hbF9kYXRhJGZpbGVuYW1lW2ZpbGVdKSl7CiAgICBGaW5hbF9kYXRhJFN0dWR5W2ZpbGVdID0gMn0KfQoKIyBUbyBnZXQgZ3JvdXAgbnVtYmVyCkZpbmFsX2RhdGEkR3JvdXA9cmVnbWF0Y2hlcyhGaW5hbF9kYXRhJGZpbGVuYW1lLCByZWdleHByKCJbR10uKlswLTldIiwgRmluYWxfZGF0YSRmaWxlbmFtZSkpCgpGaW5hbF9kYXRhJEdyb3VwID0gZ3N1YigiW0csIF8sIFRdIiwgIiIsIEZpbmFsX2RhdGEkR3JvdXApCgpGaW5hbF9kYXRhJEdyb3VwPXN1YnN0cihGaW5hbF9kYXRhJEdyb3VwLCAxLCBuY2hhcihGaW5hbF9kYXRhJEdyb3VwKS0xKQoKIyBUbyBnZXQgdHJpYWwgbnVtYmVyCkZpbmFsX2RhdGEkVHJpYWw9cmVnbWF0Y2hlcyhGaW5hbF9kYXRhJGZpbGVuYW1lLCByZWdleHByKCJbVF0uKlswLTldIiwgRmluYWxfZGF0YSRmaWxlbmFtZSkpCgpGaW5hbF9kYXRhJFRyaWFsID0gZ3N1YigiW1RdIiwgIiIsIEZpbmFsX2RhdGEkVHJpYWwpCgojIFRvIGdldCBjb25kaXRpb24KRmluYWxfZGF0YSA9IEZpbmFsX2RhdGEgJT4lIGdyb3VwX2J5KGZpbGVuYW1lKSAlPiUgbXV0YXRlKENvbmRpdGlvbiA9IGdzdWIoJy57NH0kJywgJycsIHN0cnNwbGl0KGZpbGVuYW1lLCAiXyIpW1sxXV1bNF0pKQoKYGBgCiMgVG8gZ2V0IG1lYW4gcGFyYW1ldGVycyBmb3IgQ1JRQQptZWFuKEZpbmFsX2RhdGEkRGltZW5zaW9uX1Jlc3AsIG5hLnJtID0gVFJVRSkgIyAzLjEyID0gMwptZWFuKEZpbmFsX2RhdGEkUmFkaXVzX1Jlc3AsIG5hLnJtID0gVFJVRSkgIyAwLjU5NgptZWFuKEZpbmFsX2RhdGEkRGVsYXlfUmVzcCwgbmEucm0gPSBUUlVFKSAjIDI4LjgxID0gMjkKCm1lYW4oRmluYWxfZGF0YSREaW1lbnNpb25fSFIsIG5hLnJtID0gVFJVRSkgIyAxNC4yNCA9IDE0IAptZWFuKEZpbmFsX2RhdGEkUmFkaXVzX0hSLCBuYS5ybSA9IFRSVUUpICMgMS4yNzQKbWVhbihGaW5hbF9kYXRhJERlbGF5X0hSLCBuYS5ybSA9IFRSVUUpICMgMjEuMzkgPSAyMQoKIyBUbyBwZXJmb3JtIENSUUEKQ3JlYXRpbmcgY29udHJvbHM6IHNodWZmbGVkIGNvbnRyb2xzCgpsb29wIHRocm91Z2ggYWxsIHBhaXJzIGFuZCBjb25kaXRpb25zCnNodWZmbGUgdGhlIHRpbWVzZXJpZXMgKHRha2UgYSB0aW1lc2VyaWVzIGFuZCByZWFycmFuZ2UgaXRzIHZhbHVlcyBpbiBhIHJhbmRvbSBvcmRlcikuIFRpcCBjaGVjayB0aGUgc2FtcGxlKCkgZnVuY3Rpb24KcnVuIGNycWEgYW5kIHNhdmUgdGhlIG91dHB1dC4gTkIuIHdoaWNoIGRlbGF5LCBlbWJlZCwgcmFkaXVzIHBhcmFtZXRlcnMgc2hvdWxkIHlvdSB1c2U/CnN0YXRpc3RpY2FsbHkgY29tcGFyZSB0aGUgY3JxYSBpbmRleGVzIGluIHJlYWwgYW5kIHNodWZmbGVkIHBhaXJzClRSSUNLWSEgQ3JlYXRpbmcgY29udHJvbHM6IHN1cnJvZ2F0ZSBwYWlyIGNvbnRyb2xzCgpQZXIgZWFjaCByZWFsIHBhaXIsIGlkZW50aWZ5IGF0IGxlYXN0IG9uZSBzdXJyb2dhdGUgcGFpciAobWF0Y2hpbmcgb25lIG9mIHRoZSBwYXJ0aWNpcGFudHMsIHdpdGggc29tZWJvZHkgZG9pbmcgdGhlIHNhbWUgdGFzaywgYnV0IGluIGEgZGlmZmVyZW50IHBhaXIpLiBUaXA6IENlbGluZSB3aWxsIHNoYXJlIGEgY29tbWVudGVkIHNjcmlwdApSdW4gY3JxYSBvbiBhbGwgdGhlIHN1cnJvZ2F0ZSBwYWlycyBhbmQgc2F2ZSB0aGUgb3V0cHV0LiBOQi4gd2hpY2ggZGVsYXksIGVtYmVkLCByYWRpdXMgcGFyYW1ldGVycyBzaG91bGQgeW91IHVzZT8KVGVzdCB3aGV0aGVyIGNycWEgc2hvd3MgYSBkaWZmZXJlbmNlIGJldHdlZW4gcmVhbCBhbmQgc3Vycm9nYXRlIHBhaXJzClRlc3RpbmcgZWZmZWN0cyBvZiBjb25kaXRpb25zCgptYWtlIGEgKHByb2JhYmx5IHVuZGVycG93ZXJlZCkgbWl4ZWQgbW9kZWwgdGVzdGluZyBlZmZlY3RzIG9mIHRoZSBkaWZmZXJlbnQgY29uZGl0aW9ucyBvbiBoZWFydCByYXRlIGFuZCByZXNwaXJhdGlvbiBjb29yZGluYXRpb24KTi5COiB3b3VsZCBpdCBtYWtlIHNlbnNlIHRvIGluY2x1ZGUgc3Vycm9nYXRlIHBhaXJzPyBhbmQgaWYgc28gaG93PyB3aGF0IHdvdWxkIHRoYXQgdGVsbCB5b3U/CkVmZmVjdHMgb2YgcmVzcGlyYXRpb24gY29vcmRpbmF0aW9uIG9uIGhlYXJ0IHJhdGUgY29vcmRpbmF0aW9uCgpkZXNjcmliZSBob3cgeW91IHdvdWxkIHRlc3QgdGhvc2UuCk9wdGlvbmFsOiBydW4gdGhlIG1vZGVscyBhbmQgcmVwb3J0IHRoZW0=